[Data Science Tool Box] 3일차 실습
실습26: 186 컴퓨터에서 깃+깃헙연결하기
-
186에서 깃+깃헙연결할때 어려운점.
- 토큰을 쳐야한다는게 어려움.
- 윈도우에서는 직접로그인으로 인증했음. 코드스페이스에서는 별도의 인증과정이 필요없었음.
- 일반서버에서는 토큰으로 해결해야함. (다른 방법도 있는데 그냥 이게 젤 편함)
-
비밀번호 치는게 귀찮으면?
git config credential.helper store # 이걸실행하고 이후에 한번만 푸시하면 된다.
git add .
git commit -m .
git push
실습27: 작업하던 블로그를 강의실 윈도우로 clone
-
아래를 실행하면 됩니당
git clone {repo-name} # 처음부터 새로만듦
실습28: 블로그 생성원리 이해하기
-
아래를 실행하고 git switch
를 사용할시 무슨일이 생기는지 파악
# git add .
# git commit -m . # 이거 2개가 깃에서의 save 라고 생각하자.
git switch gh-pages
git switch main
-
위의 과정을 반복해보면서 폴더를 관찰. 느낀점 서술
-
git switch gh-pages
한 상태에서 폴더에 존재하는 html파일들을 열어볼 것.
실습29: 블로그 깨기
-
git swtich gh-pages
한 상태에서 폴더에 존재하는 모든 파일을 삭제 \(\to\) 본인 홈페이지에 가보자. 홈페이지는 살아 있는가?
아직은 살아있어!
-
아래를 실행하고 본인홈페이지에 방문해보자. 홈페이지는 살아있는가?
git add .
git commit -m .
git push
깨져있어!
quarto render
실행해 보자! —>_site
에 저장이 되어있다 하네?
-
왜 죽었다고 생각하는가?
git main
은 직접적인 영향을 가지는 건 아니고.. html파일을 띄어주는.. 모드를 gh-pages
로 옮겨놓으면 github에 올라가고 github가 그럼 알아서 블로그에 옮겨줌
-
깃헙 특수기능 중 하나인 웹페이지 배포능력에 대하여 스스로 이해한 바를 서술해보자.
실습30: 코드를 숨기는 블로그 (야메)
-
주피터다운로드 후 블로그를 만드는 것은 포스트를 엄청 빠르게 만드는 사기적 능력임
- https://scikit-learn.org/stable/auto_examples/index.html
- https://matplotlib.org/stable/gallery/index.html
-
내가 베낄때는 좋지만 누군가가 내 블로그를 베낀다 생각하면 기분나쁠 수 있음
-
실습29를 응용하여 코드가 없는 블로그를 만들어보자
실습31: 코드를 숨기는 블로그 (합법)
-
의문점: 그런데 작업내용을 블로그에 올릴때 꼭
git add . # main
git commit -m . # main
git push # main
quarto publish --no-browser --no-prompt
순서로 업로드 해야하는가? 그냥 단순히
quarto publish --no-browser --no-prompt # 코드는 업데이트 안됨
만 하면 안되는가? (경험상 되던데요?)
-
코드를 숨길 수 있는 블로그를 만들고 싶다면? 어떻게 하면 좋을지 생각해보자.
실습32: pull
+ push
(잘 쓰면 편해)
-
186 컴퓨터 (혹은 본인이 주로 쓰는 서버 컴퓨터) 에서 pull
-
186 컴퓨터에서 수정 \(\to\) push
-
실습실 컴퓨터에서 다시 pull
-
실습실 컴퓨터에서 수정 \(\to\) push
-
소감:
실습33: pull
+ push
(난 불편해)
-
186 컴퓨터 (혹은 본인이 주로 쓰는 서버 컴퓨터) 에서 pull
-
186 컴퓨터에서 수정 \(\to\) push 안함
-
실습실 컴퓨터에서 수정 \(\to\) push
-
186컴퓨터는 뭐야? \(\to\) push 시도.. \(\to\) 실패
-
해결책:
실습34: gh-pages
에서 만들기 싫다면..?
-
생각해보니까 딱히 내 코드가 비밀은 아님
-
브랜치를 쓰는게 이론상 깔끔하긴 한데 막상 쓰려니까 불편함. (그 파일이 순간적으로 없어지는 거잖아요?.. 엄청 찝찝해요)
-
quarto publish
는 아래동작의 결합이다.
quarto render
# html파일들이 어딘가 만들어져있음.
git switch gh-pages
# 만들어진 html파일들이 복사됨.
git add .
git commit -m .
git push
git switch main
-
아래와 같이 수정하고 싶다면?
quarto render
# html파일들을 docs라는 폴더에 저장
git add .
git commit -m .
git push
그리고 깃헙설정을 변경한다면?
-
하는방법
step1
git push origin --delete gh-pages # 로칼에서 브랜치삭제 + 원격으로 업데이트
git add .
git commit -m .
git push
step2
_quarto.yml
project:
type: website
output-dir: docs # <- 이거 추가하세요
# 이 아래는 수정필요없음
step3
이후 https://github.com/{user-name}/{repo-name}/settings/pages 로 이동하여 셋팅을 변경하면 된다.
실습35: 파이썬 버전확인하기
-
기본명령
python --version
-
이걸 이용해서 코랩의 파이썬 버전을 확인해보자.
!python --version
실습36: 가상환경 py310생성 + pip으로 판다스 설치하고 버전확인
-
가상환경 지우기
conda env remove -n "가상환경이름"
-
우리의 무기1: pip list
pip list
Package Version
---------- -------
pip 23.3.1
setuptools 68.2.2
wheel 0.41.2
-
우리의 무기2: conda list
conda list
# packages in environment at /root/anaconda3/envs/py310:
#
# Name Version Build Channel
_libgcc_mutex 0.1 main
_openmp_mutex 5.1 1_gnu
bzip2 1.0.8 h7b6447c_0
ca-certificates 2023.12.12 h06a4308_0
ld_impl_linux-64 2.38 h1181459_1
libffi 3.4.4 h6a678d5_0
libgcc-ng 11.2.0 h1234567_1
libgomp 11.2.0 h1234567_1
libstdcxx-ng 11.2.0 h1234567_1
libuuid 1.41.5 h5eee18b_0
ncurses 6.4 h6a678d5_0
openssl 3.0.12 h7f8727e_0
pip 23.3.1 py310h06a4308_0
python 3.10.13 h955ad1f_0
readline 8.2 h5eee18b_0
setuptools 68.2.2 py310h06a4308_0
sqlite 3.41.2 h5eee18b_0
tk 8.6.12 h1ccaba5_0
tzdata 2023c h04d1e81_0
wheel 0.41.2 py310h06a4308_0
xz 5.4.5 h5eee18b_0
zlib 1.2.13 h5eee18b_0
-
판다스의 설치
pip install pandas # 터미널에서 하는게 적성입니다. 나머지 야메에요
-
pip list
로 확인
Package Version
--------------- ------------
numpy 1.26.3
pandas 2.1.4
pip 23.3.1
python-dateutil 2.8.2
pytz 2023.3.post1
setuptools 68.2.2
six 1.16.0
tzdata 2023.4
wheel 0.41.2
-
conda list
로 확인
# packages in environment at /root/anaconda3/envs/py310:
#
# Name Version Build Channel
_libgcc_mutex 0.1 main
_openmp_mutex 5.1 1_gnu
bzip2 1.0.8 h7b6447c_0
ca-certificates 2023.12.12 h06a4308_0
ld_impl_linux-64 2.38 h1181459_1
libffi 3.4.4 h6a678d5_0
libgcc-ng 11.2.0 h1234567_1
libgomp 11.2.0 h1234567_1
libstdcxx-ng 11.2.0 h1234567_1
libuuid 1.41.5 h5eee18b_0
ncurses 6.4 h6a678d5_0
numpy 1.26.3 pypi_0 pypi
openssl 3.0.12 h7f8727e_0
pandas 2.1.4 pypi_0 pypi
pip 23.3.1 py310h06a4308_0
python 3.10.13 h955ad1f_0
python-dateutil 2.8.2 pypi_0 pypi
pytz 2023.3.post1 pypi_0 pypi
readline 8.2 h5eee18b_0
setuptools 68.2.2 py310h06a4308_0
six 1.16.0 pypi_0 pypi
sqlite 3.41.2 h5eee18b_0
tk 8.6.12 h1ccaba5_0
tzdata 2023.4 pypi_0 pypi
wheel 0.41.2 py310h06a4308_0
xz 5.4.5 h5eee18b_0
zlib 1.2.13 h5eee18b_0
-
방법3: 파이썬에서
import pandas as pd
pd.__version__
실습37: 저의 가장 최신 흑역사 재현
-
기억하고 싶지 않았음: https://guebin.github.io/DV2023/posts/13wk-2.html
-
py310 환경에서 아래의 코드를 실행한다.
= pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df map(lambda x: 0 if x == '-' else x) df.
-
colab 환경의 python과 pandas 버전을 조사하고 유사환경을 만든다.
# 이렇게 하면됩니당
conda create -n co python=3.10.12
conda activate co
pip install pandas==1.5.3
-
아래의 코드를 실행해보자.
= pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df map(lambda x: 0 if x == '-' else x) df.
-
학생들 질문: 제 컴퓨터에서는 안되는데요.. 어쩌죠?
- 답변1: 코랩에서 하세요..
-
학생들 질문2: pip install pandas
해도 안되는데요, 어쩌죠?
- 답변1: 코랩해서 하세요..
- 진짜 많이 겪는 상황: 저는 꼭 제 노트북으로 해야겠습니다.. -> 아나콘다 쓰시나요? -> 쓰긴쓰는데…….. -> 환경분리해서 실습했어요? -> ????? -> 제가 볼게요.. (찾아보니까) base에 있음..
- 답변2: 일단은
pip install pandas -U
해보세요 - 뒤에 -U붙이면 삭제하고 다시 깔림
- 답변2: 일단은
-
답변2가 적절할까?
-
가장 좋아하는 답변: 환경 새로 파세요
-
최악의 상황 (포맷으로 귀결되는 엔딩)
- 일단 아나콘다는 깔아놓았음.
- 잘 몰라서 (base) 상태에서 이것저것 깔기 시작함.
- 교수랑 코드 “똑.같.이.” 쳤는데 내 컴퓨터에서는 안됨.
- 교수가 맥이라서 그런가보다 하고 인터넷에서 해결책 찾기 시작함.
- 뭐 하라는 대로 해서 이제까지 해결해 왔음. (버전은 점점 엉키기 시작함)
- 안되는건 잘하는 선배찾아가서 물어봤는데 귀신같이 해결해줌. (하지만 버전은 점점 더 엉키고 있음)
- 그런데 또 문제가 생겼고 이제는 해결못하겠음.
- 교수한테 찾아감 -> 교수가 해준다면서 (base)에서 새로운 환경 (py310)을 만들어서 이것저것 시도해 봄.
- 성공하면 다행인데, 실패함1
- 이건 방법이 없다며 아나콘다를 지우고 재설치 시도. 그런데 윈도우에서는 아나콘다 지우는게 까다로움. (먼가 설정이 자꾸 남아있단 말이에요)
- 새로 계정만들어서 아나콘다 설치시도 -> 실패
- 교수도 사실 윈도우 잘 모른다고 하면서 회피.
- 포맷
- 다시 아나콘다 깔고 1-13을 반복함.
1 4학년쯤에는 이미 (base) 가 손쓸 수 없는 상태로 깨져있는 경우가 허다함. 공부를 열심히 한 학생일수록 그러함. 이럴경우 소생가능성이 없음
-
부작용: 아나콘다 트라우마 발생해서 “리눅스에서 쓰는 모든 명령” 을 (base) 상태에서 실행해야하는지 (py310) 상태에서 실행해야 하는지 두려워함.
-
부작용을 극복하는 방법: 서버사용하세요. 컴퓨터 망가뜨리면 찾아오세요. 모든 자료는 언제든 클론가능하게 깃헙에 저장하세요.
실습38: 여러개의 가상환경 생성
-
가능하면 프로젝트별로 환경을 분리하는게 좋다.
-
하나의 환경에 모든 패키지를 때려밖아 설치하는건 패키지 충돌나라고 기도하는 꼴이다.
실습39: 주피터랩 설정변경
-
root유저의 홈에서 ls
, ls -a
를 쳐보자.
-
들어가서 jupyter_notebook_config.py
를 열어보자.
없다면 아래를 이용하여 만들자.
jupyter notebook --generate-config
-
아래의 내용을 변경
= "0.0.0.0"
c.ServerApp.ip = 8888 # 8888아니구요. 본인이 쓸수 있는 포트중에서 좋아하는거 쓰세여
c.ServerApp.port = True
c.ServerApp.allow_root = True # 당장필요한건 아닌데요.. 해놓으세여 c.ServerApp.allow_remote_access
-
이제 켜보세요..
-
root유저의 홈에서 ls
, ls -a
(숨겨진 파일을 볼 수 있음)를 쳐보자.
-
들어가서 jupyter_notebook_config.py
를 열어보자.
없다면 아래를 이용하여 만들자.
jupyter notebook --generate-config
-
아래의 내용을 변경
= "0.0.0.0"
c.ServerApp.ip = 8888 # 8888아니구요. 본인이 쓸수 있는 포트중에서 좋아하는거 쓰세여
c.NotebookApp.port = True
c.ServerApp.allow_root = True # 당장필요한건 아닌데요.. 해놓으세여 c.ServerApp.allow_remote_access
-
이제 켜보세요..
실습40: 주피터랩 평생 켜놓기
-
아래와 같이 하면 됩니다.
nohup jupyter lab --ip "0.0.0.0" --port {MY-PORT} --allow-root > /dev/null 2>&1 &
실습41: R+Python 사용가능한 개발환경 만들기
-
아래를 실행
conda create -n rpy
conda activate rpy
conda install -c conda-forge r-essentials
conda install -c conda-forge plotly
conda install -c conda-forge rpy2
-
여기에서 conda install -c conda-forge r-essentials
로 인하여 R, Python, Jupyter 가 모두 최신버전으로 설치된다.
-
또한 R에는 이미 tidyverse
, IRkernel
등의 패키지가 기본으로 깔려있다.
-
R이 설치된 경로를 찾아보자.
-
수틀리면 이 R을 지우면 된다.
-
R이 설치될 수 있는 3가지 시나리오
sudo apt-get install r-base # r 공식홈페이지, 수틀리면 리눅스 포맷
(base) conda install -c conda-forge ... # 수틀리면 아나콘다 삭제해야함.
(rpy) conda install -c conda-forge ... # 수틀리면 가상환경 삭제
실습42: 여러가지 프로그램, 여러가지 설치방법
-
우분투자체의 프로그램
- 우분투 자체의 프로그램 예시: git, quarto, python, R, anaconda, vi, ssh, wget, vscode
- 우분투 자체의 프로그램은 다시 모든 유저가 영향을 받는 받는 프로그램과 그렇지 않은 프로그램이 있음
- 우분투 자체의 프로그램을 설치하는 방법들
sudo apt install git
sudo apt-get install git
sudo dpkg -i quarto-1.4.533-linux-amd64.deb
bash Anaconda3-2019.03-Linux-x86_64.sh
sudo gdebi rstudio-server-1.2.5033-amd64.deb
# 기타 파일을 넣을 수 있는 모든 방법 (예를들면 압축파일 다운로드후 풀기)
-
아나콘다(=base)에 종속된 프로그램
- 아나콘다내에 종속된 프로그램의 예시: conda, python, R, jupyter
- 아나콘다에 종속된 프로그램은
anaconda3
폴더안에 있음.
-
아나콘다환경에 종속시킬 수 “있는” 프로그램
- 아나콘다내에 종속된 프로그램의 예시: python, R, jupyter
- 아나콘다환경에 종속된 프로그램은
anaconda3/envs/py310
와 같은 형식의 폴더안에 있음.
-
파이썬에 종속된 프로그램 (=파이썬패키지=파이썬라이브러리=파이썬모듈)
- 파이썬에 종속된 프로그램 예시: numpy, pandas
- 얘네들이 어디에 깔리는지는 그때그때 다름
- 지우는 방법도 그때그때 다르겠지? (젤 편하고 깔끔하게 지우려면?)
-
R에 종속된 프로그램 (=R패키지=R라이브러리)
- R에 종속된 프로그램의 예시: tidyverse
- 얘들이 어디 깔리는지도 그때그때 다름
- 지우는 방법도 그때그때 다르겠지? (젤 편하고 깔끔하게 지우려면?)
-
질문1: pip install
vs conda install
- 설치되는 레벨의 차이
- 설치에서 느껴지는 편안함의 차이
- 삭제할때 느껴지는 불편함의 차이
pip install pandas
는 사실install.packages("tidyverse")
에 대응되는 것임
-
질문2: 언제 pip install
을 쓰고 언제 conda install
을 써야할까? 답은없어요. 저는 대충 아래와 같이 합니다. (해보고 수틀리면 그냥 환경날리세여)
- 만만한 패키지는 pip install 로 설치: numpy, pandas
- 까다로운 패키지는 conda install 로 설치: torch, autogluon
실습43: (base)에서 (rpy)에 있는 R 실행
-
원래는 불가능한 일이겠죠?
-
억지로 가능하게 하려면?
실습44: (rpy)에서 EPT라는 R패키지 설치하고 위치파악하기
-
R을 실행
conda activate rpy
R
-
또다른 터미널을 열고 아래의 폴더로 이동 + 패키지확인
~/anaconda3/envs/rpy/lib/R/library
cd ls
-
EPT패키지 설치
install.packages("EPT")
-
~/anaconda3/envs/rpy/lib/R/library
에서 확인
실습45: (rpy)에 설치된 R과 주피터 연결하기
-
R을 실행
::installspec() IRkernel
-
주피터 실행